perm filename TMP[MF,ALS] blob sn#760281 filedate 1984-06-28 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00003 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	y←min_y
C00004 00003	@<Encode the glyph@>=
C00006 ENDMK
C⊗;
y←min_y;
while y≤max_y do
begin
  x←min_x;
  while x≤max_x do
  begin
    if image=black then begin min_y←y; y←max_y+1; x←max_x; end;
    incr(x);
  end;
  incr(y);
end;
if y=max_y+1 then begin min_y←max_y+1; min_x←max_x+1; end;
y←max_y;
while y≥min_y do
begin
  x←min_x;
  while x≤max_x do;
  begin
    if image=black then begin max_y←y; y←min_y; x←max_x; end;
    incr(x);
  end;
  decr(y);
end;
x←min_x;
while x≤max_x do
begin
  y←min_y;
  while y≤max_y do;
  begin
    if image=black then begin min_x←x; x←max_x; y←max_y; end;
    incr(y);
  end;
  incr(x);
end;
x←max_x;
while x≤min_x do
begin
  y←min_y;
  while y≤max_y do;
  begin
    if image=black then begin max_x←x; x←min_x; y←max_y; end;
    incr(y);
  end;
  decr(x);
end;
@<Encode the glyph@>=
if glyph_ptr[char_code]≠0 then error('Duplicate glyph');
glyph_ptr[char_code]←oc_byte_no div 4;
@!eebug
print_nl; @<Print the image@>;
gubee@/
x←min_x;
while (x≤max_x) do
begin
y←min_y;
for j←1 to num_bytes do
begin
if y<(max_y-7) then @<Get full byte@> else
if (y>max_y) then oc_byte(0)
else @<Get mixed byte@>;
end;
if (oc_byte_no mod 4)≠0 then error('Mod 4 error in |encode_glyph|');
incr(x)
end;

@ @<Get full byte@>=
  begin
    b←image; incr(y);
    for i←2 to 8 do
      begin
	b←b*2+image;
	incr(y);
      end;
    oc_byte(b);
  end

@ @<Get mixed byte@>=
begin
b←image; incr(y);
i:=2;
while y≤max_y do
  begin
  b:=b*2+image;
  incr(y);
  incr(i);
  end;
for i←i to 8 do b←b*2;
oc_byte(b);
end